package com.kinghood.productcenter.dao.base;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kinghood.productcenter.common.model.dao.base.BaseAttributeDO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kinghood.productcenter.common.model.dto.base.GetAttributePageListReqDTO;
import com.kinghood.productcenter.common.model.dto.base.ListAttributeQueryDTO;
import com.kinghood.productcenter.common.model.vo.base.AttributeListVO;
import com.kinghood.productcenter.common.model.vo.base.BaseAttributeVO;
import com.kinghood.productcenter.common.model.vo.base.GetAttributePageListVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 可选项属性 Mapper 接口
 * </p>
 *
 * @author KingHood
 * @since 2023-12-20
 */
public interface BaseAttributeMapper extends BaseMapper<BaseAttributeDO> {

    /**
     * 获取全量属性
     *
     * @return 全量属性
     * @author zfj
     * @date 2023/12/25
     */
    List<BaseAttributeVO> getAllAttribute();

    /**
     * 关联商品数量
     *
     * @param id id
     * @author jp
     * @date 2023/12/27
     */
    int countProductUsed(Long id);

    /**
     * 关联商品数量
     *
     * @param removeIds 删除ID
     * @author jp
     * @date 2023/12/27
     */
    int countProductUsedByIds(List<Long> removeIds);

    /**
     * 列表
     *
     * @param page  页
     * @param param 参数
     * @author jp
     * @date 2023/12/27
     */
    Page<AttributeListVO> listAttribute(IPage<AttributeListVO> page, @Param("param") ListAttributeQueryDTO param);

    /**
     * 获取属性
     *
     * @param page 分页
	 * @param param 条件
     * @return 属性
     * @author zfj
     * @date 2024/1/24
     */
    Page<GetAttributePageListVO> getAttributePageList(Page<Object> page, @Param("param") GetAttributePageListReqDTO param);

    /**
     * 被商品属性使用的属性值
     *
     * @param valueId 值id
     * @return @return long
     * @author jp
     * @date 2024/01/11 14:27
     */
    Integer countUsedByValueId(Long valueId);
}
